/**
 * 统一API响应格式工具函数
 */
const apiResponse = {
  /**
   * 成功响应
   * @param {Object} ctx - Koa上下文对象
   * @param {*} data - 响应数据
   * @param {string} message - 响应消息
   * @param {number} statusCode - HTTP状态码
   */
  success(ctx, data = null, message = '操作成功', statusCode = 200) {
    ctx.status = statusCode;
    ctx.body = {
      success: true,
      message,
      data
    };
  },

  /**
   * 错误响应
   * @param {Object} ctx - Koa上下文对象
   * @param {string} message - 错误消息
   * @param {number} statusCode - HTTP状态码
   * @param {*} errors - 错误详情
   */
  error(ctx, message = '操作失败', statusCode = 400, errors = null) {
    ctx.status = statusCode;
    ctx.body = {
      success: false,
      message,
      errors
    };
  },

  /**
   * 分页数据响应
   * @param {Object} ctx - Koa上下文对象
   * @param {Array} data - 数据列表
   * @param {number} total - 总条数
   * @param {number} page - 当前页码
   * @param {number} pageSize - 每页条数
   * @param {string} message - 响应消息
   */
  paginated(ctx, data, total, page, pageSize, message = '获取成功') {
    ctx.status = 200;
    ctx.body = {
      success: true,
      message,
      data: {
        list: data,
        pagination: {
          total,
          page: Number(page),
          pageSize: Number(pageSize),
          totalPages: Math.ceil(total / pageSize)
        }
      }
    };
  }
};

module.exports = apiResponse;